Recording and playing back data:录制和播放数据 | 您所在的位置:网站首页 › ros2 bag record › Recording and playing back data:录制和播放数据 |
文章目录ros2 bag 命令简介1. 准备环境2. 选择一个话题3. ros2 bag record 命令3.1 记录多个话题4. ros2 bag info 命令5. ros2 bag play 命令
参考官方文档:
Recording and playing back data
ros2 bag 命令简介
ros2 bag 是一个命令行工具,用于记录在你的系统中的话题上发布的数据。它积累了在任何数量的话题上传递的数据,并将其保存在一个数据库中。然后你可以重放这些数据来重现你的测试和实验的结果。记录主题也是分享你的工作并允许他人重现的一个好方法。 1. 准备环境安装软件包: sudo apt-get install ros-humble-ros2bag \ros-humble-rosbag2-storage-default-plugins打开两个终端,分别运行: ros2 run turtlesim turtlesim_node ros2 run turtlesim turtle_teleop_key新建一个文件夹用于保存录制的数据: mkdir bag_files && cd bag_files 2. 选择一个话题ros2 bag 只能记录已发布的话题中的数据。要查看你的系统的话题列表,请打开一个新的终端并运行命令: ros2 topic list返回结果如下: /parameter_events /rosout /turtle1/cmd_vel /turtle1/color_sensor /turtle1/pose 在前面的教程中,已经知道 /turtle_teleop 节点在 /turtle1/cmd_vel 话题上发布命令,使乌龟在turtlesim中移动。 要查看 /turtle1/cmd_vel 正在发布的数据,运行命令: ros2 topic echo /turtle1/cmd_vel一开始不会有什么显示,因为节点没有发布数据。回到你运行teleop的终端,选择它,使它处于激活状态。使用方向键移动乌龟,你会看到运行ros2 topic echo的终端上正在发布数据: linear:x: 2.0y: 0.0z: 0.0 angular:x: 0.0y: 0.0z: 0.0--- 3. ros2 bag record 命令要记录发布到一个话题的数据,使用命令: ros2 bag record在你选择的话题上运行这个命令之前,打开一个新的终端,并进入你先前创建的bag_files目录,因为rosbag文件将保存在你运行它的目录中。 运行命令: ros2 bag record /turtle1/cmd_vel你会在终端看到以下信息(日期和时间会有所不同): 现在ros2包正在记录/turtle1/cmd_vel话题上发布的数据。回到teleop终端,再次移动乌龟。 移动几次之后按 Ctrl+C 停止记录,数据将被记录到一个 bag 文件中,名称命名模式为 rosbag2_year_month_day-hour_minute_second 。 3.1 记录多个话题你还可以记录多个话题,以及改变ros2 bag保存的文件的名称。 使用以下命令: ros2 bag record -o subset /turtle1/cmd_vel /turtle1/pose-o 选项允许你为你的bag文件选择一个独特的名字。 要想一次记录一个以上的话题,只需将每个话题用空格隔开即可。 你会看到以下信息,确认两个话题都在录制中: 还有一个选项可以添加到命令中,即 -a ,它可以记录你系统中的所有话题。 4. ros2 bag info 命令你可以通过运行以下命令查看关于录制的细节: ros2 bag info对 subset 文件运行此命令将返回文件的信息列表: ros2 bag info subset要查看单个信息,你必须打开数据库,在这种情况下是sqlite3,来检查它,这超出了ROS 2的范围。 5. ros2 bag play 命令在重放bag文件之前,在teleop运行的终端上输入Ctrl+C。然后确保你的turtlesim窗口是可见的,这样你就可以看到bag文件的运行情况。 输入命令: ros2 bag play subset你的乌龟将遵循你在录制时输入的路径(虽然不是100%准确;turtlesim对系统时间的微小变化很敏感)。 因为 subset 文件记录了 /turtle1/pose 主题,所以只要你有turtlesim运行,ros2 bag play命令就不会退出,即使你没有移动。 这是因为只要/turtlesim节点处于活动状态,它就会定期在/turtle1/pose主题上发布数据。你可能已经注意到在上面的ros2 bag info例子结果中,/turtle1/cmd_vel主题的Count信息有56个;这就是我们在录制时按下方向键的次数。 请注意,/turtle1/pose的Count值有12436;在我们录制的时候,该话题的数据被发布了12436次。 为了了解位置数据的发布频率,你可以运行命令: ros2 topic hz /turtle1/pose |
CopyRight 2018-2019 实验室设备网 版权所有 |